package services;

import java.io.InputStream;
import java.util.List;

import org.codehaus.jackson.JsonNode;

import play.libs.F.Promise;
import collectors.calendar.models.Event;
import collectors.email.models.GmailEmail;
import collectors.file.models.FileInfo;
import collectors.people.models.PeopleUser.FacebookData;

class RemoteCollectorService extends CollectorService {

	private RemoteCollectorService() {
	}

	private static RemoteCollectorService instance;

	public static RemoteCollectorService get() {
		if (instance == null) {
			instance = new RemoteCollectorService();
		}

		return instance;
	}

	@Override
	Promise<List<Event>> searchEventsImpl(Long calUserId, String query) {
		throw new RuntimeException("Not implemented Yet");
	}

	@Override
	Promise<List<Event>> getEventDetailsImpl(Long calUserId, String eventId) {
		throw new RuntimeException("Not implemented Yet");
	}

	@Override
	Promise<List<GmailEmail>> searchEmailsImpl(Long gmailUserId, String query, int max) {
		throw new RuntimeException("Not implemented Yet");
	}

	@Override
	Promise<List<FileInfo>> getMetadataImpl(Long fileUserId, String path) {
		throw new RuntimeException("Not implemented Yet");
	}

	@Override
	Promise<List<FileInfo>> searchFilesImpl(Long fileUserId, String query,
			String path) {
		throw new RuntimeException("Not implemented Yet");
	}

	@Override
	Promise<InputStream> getFileImpl(Long fileUserId, String path) {
		throw new RuntimeException("Not implemented Yet");
	}

	@Override
	Promise<JsonNode> getPeopleUserDataImpl(Long peopleUserId) {
		throw new RuntimeException("Not implemented Yet");
	}

	@Override
	Promise<List<FacebookData>> searchPeopleImpl(Long peopleUserId, String query) {
		throw new RuntimeException("Not implemented Yet");
	}

	@Override
	Promise<Long> createPeopleUser() {
		throw new RuntimeException("Not implemented Yet");
	}

	@Override
	Promise<Long> createFileUser() {
		throw new RuntimeException("Not implemented Yet");
	}

	@Override
	Promise<Long> createEmailUser() {
		throw new RuntimeException("Not implemented Yet");
	}

	@Override
	Promise<Long> createCalendarUser() {
		throw new RuntimeException("Not implemented Yet");
	}

	@Override
	String getBaseUrlImpl(Services service) {
		return play.Play.application().configuration().getString("you.remote.baseurl");
	}
}
